package DesignPattern.Singleton;

/**
 * @Author self
 * @Date 2024/8/11 17:45
 */

/*
使用枚举来实现单例模式，防止反序列化和反射攻击，是实现单例模式的最佳方式。
*/

/*    线程安全：

            枚举类型的实例由 JVM 保证线程安全，不需要额外的同步机制。
            防止反序列化破坏单例：

            Java 的反序列化机制会重新创建对象实例，但对于枚举类型，JVM 会保证反序列化时返回的是同一个实例。
            因此，枚举单例天然防止了反序列化破坏单例的问题。
            防止反射攻击：

            枚举单例也抵御了通过反射创建实例的问题。反射调用枚举类型的构造函数会抛出 IllegalArgumentException 异常，
            因此无法通过反射破坏单例。*/

public enum SingletonEnum {
    INSTANCE;

    public void doSomething() {
        // 单例的业务方法
    }

}

